#ifndef _JEU_H
#define _JEU_H
#include "Sokoban.h"
#include "Caisse.h"

typedef struct 
{
  Sokoban sok;
  Terrain ter;
  Caisse cai;
}Jeu;

/*Pré-condition: le pointeur sur jeu non initialisé
  Postcondition: Le pointeur sur jeu initialisé */
void jeuInit(Jeu *);

/*Pré-condition: le pointeur sur jeu initialisé
  Postcondition: retourne un pointeur  terrain dans le jeu */
Terrain *jeuGetTerrainPtr(Jeu *);

/*Pré-condition: le pointeur sur jeu initialisé
  Postcondition: retourne un pointeur  sokoban  dans le jeu */
Sokoban *jeuGetSokobanPtr(Jeu *);

/*Pré-condition: le pointeur sur jeu initialisé
  Postcondition: retourne un pointeur des caisses dans le jeu */
Caisse *jeuGetCaissePtr(Jeu *);

/*Pré-condition: le pointeur sur jeu initialisé
  Postcondition: retourne un pointeur constant  terrain dans le jeu */
const Terrain *jeuGetConstTerrainPtr(const Jeu *);

/*Pré-condition: le pointeur sur jeu initialisé
  Postcondition: retourne un pointeur constant sokoban  dans le jeu */
const Sokoban *jeuGetConstSokobanPtr(const Jeu *);

/*Pré-condition: le pointeur sur jeu initialisé
  Postcondition: retourne un pointeur constant  des caisses dans le jeu */
const Caisse *jeuGetConstCaissePtr(const Jeu *);

/* Pre-condition : le pointeur sur jeu initialise et non vide
   Postcondition: En fonction de la touche du clavier appuyee on dirige le sokoban ou la  caisse en question*/
void jeuActionClavier(Jeu *pJ, const char);

void jeuActionClavierCaisse(Jeu *pJ, const char touche);

#endif
